package com.aspose.cells;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;

class zcm {
   private byte[] b = null;
   private int[] c = null;
   protected static HashMap a = new HashMap();

   ArrayList a(zot var1, boolean var2) {
      ArrayList var3 = new ArrayList();
      char[] var4 = var1.a.toCharArray();
      char[] var5 = new char[var1.a.length()];
      zcn var6 = new zcn(var4, 0, var1.a.length(), (byte)(var2 ? 1 : 0));
      this.b = new byte[var1.a.length()];
      this.c = new int[var1.a.length()];
      byte[] var7 = var6.a();
      int var8 = this.a(var4, 0, var4.length - 1) + 1;

      int var9;
      for(var9 = 0; var9 < var8; this.c[var9] = var9++) {
         this.b[var9] = var7[var9];
      }

      var9 = 0;
      int var10 = 0;

      while(true) {
         while(true) {
            if (var9 < var8) {
               char var11 = var4[var9];
               if ((var11 < 1536 || var11 > 1791) && (var11 < 1424 || var11 > 1535)) {
                  if (var9 != var10) {
                     var4[var10] = var4[var9];
                     this.b[var10] = this.b[var9];
                  }

                  ++var9;
                  ++var10;
                  continue;
               }
            }

            int var13;
            int var17;
            if (var9 >= var8) {
               var8 = var10;
               this.a(0, var10 - 1);
               new StringBuilder();
               this.a(var4);

               for(var17 = 0; var17 < var8; ++var17) {
                  var13 = this.c[var17];
                  char var18 = var4[var13];
                  zot var15 = new zot();
                  var15.b = var1.b;
                  var15.a = "" + var18;
                  com.aspose.cells.b.a.a.ze.a(var3, (Object)var15);
               }

               return var3;
            }

            int var16;
            for(var16 = var9++; var9 < var8; ++var9) {
               char var12 = var4[var9];
               if ((var12 < 1536 || var12 > 1791) && (var12 < 1424 || var12 > 1535)) {
                  break;
               }
            }

            var17 = var9 - var16;
            var13 = zar.a(var4, var16, var17, var4, var10, var17, 0);
            if (var16 != var10) {
               for(int var14 = 0; var14 < var13; ++var14) {
                  this.b[var10++] = this.b[var16++];
               }
            } else {
               var10 += var13;
            }
         }
      }
   }

   void a(ArrayList var1, boolean var2) {
      ArrayList var3 = new ArrayList();

      label147:
      for(int var4 = 0; var4 < var1.size(); ++var4) {
         zot var5 = (zot)var1.get(var4);
         var5.a = com.aspose.cells.b.a.zv.a(var5.a, "\r\n", "\n");
         if (var5.d != 8) {
            com.aspose.cells.b.a.a.ze.a(var3, (Object)var5);
         } else {
            char[] var6 = var5.a.toCharArray();
            char[] var7 = new char[var5.a.length()];
            zcn var8 = new zcn(var6, 0, var5.a.length(), (byte)(var2 ? 1 : 0));
            this.b = new byte[var5.a.length()];
            this.c = new int[var5.a.length()];
            byte[] var9 = var8.a();

            int var10;
            for(var10 = 0; var10 < var6.length; ++var10) {
               if ('/' == var6[var10] && var10 > 0 && var10 < var6.length - 1 && var6[var10 - 1] >= '0' && var6[var10 - 1] <= '9' && var6[var10 + 1] >= '0' && var6[var10 + 1] <= '9') {
                  var9[var10] = var9[var10 + 1];
               }

               if ('-' == var6[var10] && var10 >= 1) {
                  var9[var10] = var9[var10 - 1];
               }
            }

            var10 = var6.length;

            int var11;
            for(var11 = 0; var11 < var10; this.c[var11] = var11++) {
               this.b[var11] = var9[var11];
            }

            var11 = 0;
            int var12 = 0;

            while(true) {
               while(true) {
                  if (var11 < var10) {
                     char var13 = var6[var11];
                     if ((var13 < 1536 || var13 > 1791) && (var13 < 1424 || var13 > 1535)) {
                        if (var11 != var12) {
                           var6[var12] = var6[var11];
                           this.b[var12] = this.b[var11];
                        }

                        ++var11;
                        ++var12;
                        continue;
                     }
                  }

                  int var15;
                  int var16;
                  if (var11 >= var10) {
                     var10 = var12;
                     this.a(0, var12 - 1);
                     new StringBuilder();
                     this.a(var6);
                     StringBuilder var21 = new StringBuilder();

                     for(var15 = 0; var15 < var10; ++var15) {
                        var16 = this.c[var15];
                        char var17 = var6[var16];
                        if (var17 != ' ' && var17 != '-') {
                           var21.append(var17);
                        } else {
                           this.a(var21, var3, var5);
                           zot var18 = new zot();
                           var18.a = "" + var17;
                           var18.b = var5.b;
                           com.aspose.cells.b.a.a.ze.a(var3, (Object)var18);
                        }
                     }

                     this.a(var21, var3, var5);
                     continue label147;
                  }

                  int var19;
                  for(var19 = var11++; var11 < var10; ++var11) {
                     char var14 = var6[var11];
                     if ((var14 < 1536 || var14 > 1791) && (var14 < 1424 || var14 > 1535)) {
                        break;
                     }
                  }

                  int var20 = var11 - var19;
                  var15 = zar.a(var6, var19, var20, var6, var12, var20, 0);
                  if (var19 != var12) {
                     for(var16 = 0; var16 < var15; ++var16) {
                        this.b[var12++] = this.b[var19++];
                     }
                  } else {
                     var12 += var15;
                  }
               }
            }
         }
      }

      if (var2) {
         Collections.reverse(var3);
      }

      var1.clear();
      com.aspose.cells.b.a.a.ze.a(var1, (Collection)var3);
   }

   private void a(StringBuilder var1, ArrayList var2, zot var3) {
      if (var1.length() > 0) {
         String var4 = com.aspose.cells.b.a.zr.a(var1);
         zot var5 = new zot();
         var5.a = var4;
         var5.b = var3.b;
         com.aspose.cells.b.a.a.ze.a(var2, (Object)var5);
         var1.delete(0, 0 + var1.length());
      }

   }

   public int a(char[] var1, int var2, int var3) {
      int var4;
      for(var4 = var3; var4 >= var2; --var4) {
         char var5 = var1[var4];
         if (!a(var5)) {
            break;
         }
      }

      return var4;
   }

   public static boolean a(char var0) {
      return var0 <= ' ';
   }

   public void a(char[] var1) {
      for(int var2 = 0; var2 < var1.length; ++var2) {
         char var10000 = var1[var2];
         if ((this.b[var2] & 255 & 1) == 1 && a.containsKey(Integer.valueOf(var1[var2]))) {
            int var4 = (Integer)a.get(Integer.valueOf(var1[var2]));
            var1[var2] = (char)var4;
         }
      }

   }

   void a(int var1, int var2) {
      byte var3 = this.b[var1];
      byte var4 = var3;
      byte var5 = var3;
      byte var6 = var3;

      int var7;
      for(var7 = var1 + 1; var7 <= var2; ++var7) {
         byte var8 = this.b[var7];
         if ((var8 & 255) > (var3 & 255)) {
            var3 = var8;
         } else if ((var8 & 255) < (var4 & 255)) {
            var4 = var8;
         }

         var5 &= var8;
         var6 |= var8;
      }

      if ((var6 & 255 & 1) != 0) {
         if ((var5 & 255 & 1) == 1) {
            this.b(var1, var2 + 1);
         } else {
            label61:
            for(var4 = (byte)(var4 | 1); (var3 & 255) >= (var4 & 255); --var3) {
               var7 = var1;

               while(true) {
                  while(var7 > var2 || (this.b[var7] & 255) >= (var3 & 255)) {
                     if (var7 > var2) {
                        continue label61;
                     }

                     int var9;
                     for(var9 = var7 + 1; var9 <= var2 && (this.b[var9] & 255) >= (var3 & 255); ++var9) {
                        ;
                     }

                     this.b(var7, var9);
                     var7 = var9 + 1;
                  }

                  ++var7;
               }
            }

         }
      }
   }

   void b(int var1, int var2) {
      int var3 = (var1 + var2) / 2;
      --var2;

      while(var1 < var3) {
         int var4 = this.c[var1];
         this.c[var1] = this.c[var2];
         this.c[var2] = var4;
         ++var1;
         --var2;
      }

   }

   static {
      a.put(40, 41);
      a.put(41, 40);
      a.put(60, 62);
      a.put(62, 60);
      a.put(91, 93);
      a.put(93, 91);
      a.put(123, 125);
      a.put(125, 123);
      a.put(171, 187);
      a.put(187, 171);
      a.put(8249, 8250);
      a.put(8250, 8249);
      a.put(8261, 8262);
      a.put(8262, 8261);
      a.put(8317, 8318);
      a.put(8318, 8317);
      a.put(8333, 8334);
      a.put(8334, 8333);
      a.put(8712, 8715);
      a.put(8713, 8716);
      a.put(8714, 8717);
      a.put(8715, 8712);
      a.put(8716, 8713);
      a.put(8717, 8714);
      a.put(8725, 10741);
      a.put(8764, 8765);
      a.put(8765, 8764);
      a.put(8771, 8909);
      a.put(8786, 8787);
      a.put(8787, 8786);
      a.put(8788, 8789);
      a.put(8789, 8788);
      a.put(8804, 8805);
      a.put(8805, 8804);
      a.put(8806, 8807);
      a.put(8807, 8806);
      a.put(8808, 8809);
      a.put(8809, 8808);
      a.put(8810, 8811);
      a.put(8811, 8810);
      a.put(8814, 8815);
      a.put(8815, 8814);
      a.put(8816, 8817);
      a.put(8817, 8816);
      a.put(8818, 8819);
      a.put(8819, 8818);
      a.put(8820, 8821);
      a.put(8821, 8820);
      a.put(8822, 8823);
      a.put(8823, 8822);
      a.put(8824, 8825);
      a.put(8825, 8824);
      a.put(8826, 8827);
      a.put(8827, 8826);
      a.put(8828, 8829);
      a.put(8829, 8828);
      a.put(8830, 8831);
      a.put(8831, 8830);
      a.put(8832, 8833);
      a.put(8833, 8832);
      a.put(8834, 8835);
      a.put(8835, 8834);
      a.put(8836, 8837);
      a.put(8837, 8836);
      a.put(8838, 8839);
      a.put(8839, 8838);
      a.put(8840, 8841);
      a.put(8841, 8840);
      a.put(8842, 8843);
      a.put(8843, 8842);
      a.put(8847, 8848);
      a.put(8848, 8847);
      a.put(8849, 8850);
      a.put(8850, 8849);
      a.put(8856, 10680);
      a.put(8866, 8867);
      a.put(8867, 8866);
      a.put(8870, 10974);
      a.put(8872, 10980);
      a.put(8873, 10979);
      a.put(8875, 10981);
      a.put(8880, 8881);
      a.put(8881, 8880);
      a.put(8882, 8883);
      a.put(8883, 8882);
      a.put(8884, 8885);
      a.put(8885, 8884);
      a.put(8886, 8887);
      a.put(8887, 8886);
      a.put(8905, 8906);
      a.put(8906, 8905);
      a.put(8907, 8908);
      a.put(8908, 8907);
      a.put(8909, 8771);
      a.put(8912, 8913);
      a.put(8913, 8912);
      a.put(8918, 8919);
      a.put(8919, 8918);
      a.put(8920, 8921);
      a.put(8921, 8920);
      a.put(8922, 8923);
      a.put(8923, 8922);
      a.put(8924, 8925);
      a.put(8925, 8924);
      a.put(8926, 8927);
      a.put(8927, 8926);
      a.put(8928, 8929);
      a.put(8929, 8928);
      a.put(8930, 8931);
      a.put(8931, 8930);
      a.put(8932, 8933);
      a.put(8933, 8932);
      a.put(8934, 8935);
      a.put(8935, 8934);
      a.put(8936, 8937);
      a.put(8937, 8936);
      a.put(8938, 8939);
      a.put(8939, 8938);
      a.put(8940, 8941);
      a.put(8941, 8940);
      a.put(8944, 8945);
      a.put(8945, 8944);
      a.put(8946, 8954);
      a.put(8947, 8955);
      a.put(8948, 8956);
      a.put(8950, 8957);
      a.put(8951, 8958);
      a.put(8954, 8946);
      a.put(8955, 8947);
      a.put(8956, 8948);
      a.put(8957, 8950);
      a.put(8958, 8951);
      a.put(8968, 8969);
      a.put(8969, 8968);
      a.put(8970, 8971);
      a.put(8971, 8970);
      a.put(9001, 9002);
      a.put(9002, 9001);
      a.put(10088, 10089);
      a.put(10089, 10088);
      a.put(10090, 10091);
      a.put(10091, 10090);
      a.put(10092, 10093);
      a.put(10093, 10092);
      a.put(10094, 10095);
      a.put(10095, 10094);
      a.put(10096, 10097);
      a.put(10097, 10096);
      a.put(10098, 10099);
      a.put(10099, 10098);
      a.put(10100, 10101);
      a.put(10101, 10100);
      a.put(10197, 10198);
      a.put(10198, 10197);
      a.put(10205, 10206);
      a.put(10206, 10205);
      a.put(10210, 10211);
      a.put(10211, 10210);
      a.put(10212, 10213);
      a.put(10213, 10212);
      a.put(10214, 10215);
      a.put(10215, 10214);
      a.put(10216, 10217);
      a.put(10217, 10216);
      a.put(10218, 10219);
      a.put(10219, 10218);
      a.put(10627, 10628);
      a.put(10628, 10627);
      a.put(10629, 10630);
      a.put(10630, 10629);
      a.put(10631, 10632);
      a.put(10632, 10631);
      a.put(10633, 10634);
      a.put(10634, 10633);
      a.put(10635, 10636);
      a.put(10636, 10635);
      a.put(10637, 10640);
      a.put(10638, 10639);
      a.put(10639, 10638);
      a.put(10640, 10637);
      a.put(10641, 10642);
      a.put(10642, 10641);
      a.put(10643, 10644);
      a.put(10644, 10643);
      a.put(10645, 10646);
      a.put(10646, 10645);
      a.put(10647, 10648);
      a.put(10648, 10647);
      a.put(10680, 8856);
      a.put(10688, 10689);
      a.put(10689, 10688);
      a.put(10692, 10693);
      a.put(10693, 10692);
      a.put(10703, 10704);
      a.put(10704, 10703);
      a.put(10705, 10706);
      a.put(10706, 10705);
      a.put(10708, 10709);
      a.put(10709, 10708);
      a.put(10712, 10713);
      a.put(10713, 10712);
      a.put(10714, 10715);
      a.put(10715, 10714);
      a.put(10741, 8725);
      a.put(10744, 10745);
      a.put(10745, 10744);
      a.put(10748, 10749);
      a.put(10749, 10748);
      a.put(10795, 10796);
      a.put(10796, 10795);
      a.put(10797, 10796);
      a.put(10798, 10797);
      a.put(10804, 10805);
      a.put(10805, 10804);
      a.put(10812, 10813);
      a.put(10813, 10812);
      a.put(10852, 10853);
      a.put(10853, 10852);
      a.put(10873, 10874);
      a.put(10874, 10873);
      a.put(10877, 10878);
      a.put(10878, 10877);
      a.put(10879, 10880);
      a.put(10880, 10879);
      a.put(10881, 10882);
      a.put(10882, 10881);
      a.put(10883, 10884);
      a.put(10884, 10883);
      a.put(10891, 10892);
      a.put(10892, 10891);
      a.put(10897, 10898);
      a.put(10898, 10897);
      a.put(10899, 10900);
      a.put(10900, 10899);
      a.put(10901, 10902);
      a.put(10902, 10901);
      a.put(10903, 10904);
      a.put(10904, 10903);
      a.put(10905, 10906);
      a.put(10906, 10905);
      a.put(10907, 10908);
      a.put(10908, 10907);
      a.put(10913, 10914);
      a.put(10914, 10913);
      a.put(10918, 10919);
      a.put(10919, 10918);
      a.put(10920, 10921);
      a.put(10921, 10920);
      a.put(10922, 10923);
      a.put(10923, 10922);
      a.put(10924, 10925);
      a.put(10925, 10924);
      a.put(10927, 10928);
      a.put(10928, 10927);
      a.put(10931, 10932);
      a.put(10932, 10931);
      a.put(10939, 10940);
      a.put(10940, 10939);
      a.put(10941, 10942);
      a.put(10942, 10941);
      a.put(10943, 10944);
      a.put(10944, 10943);
      a.put(10945, 10946);
      a.put(10946, 10945);
      a.put(10947, 10948);
      a.put(10948, 10947);
      a.put(10949, 10950);
      a.put(10950, 10949);
      a.put(10957, 10958);
      a.put(10958, 10957);
      a.put(10959, 10960);
      a.put(10960, 10959);
      a.put(10961, 10962);
      a.put(10962, 10961);
      a.put(10963, 10964);
      a.put(10964, 10963);
      a.put(10965, 10966);
      a.put(10966, 10965);
      a.put(10974, 8870);
      a.put(10979, 8873);
      a.put(10980, 8872);
      a.put(10981, 8875);
      a.put(10988, 10989);
      a.put(10989, 10988);
      a.put(10999, 11000);
      a.put(11000, 10999);
      a.put(11001, 11002);
      a.put(11002, 11001);
      a.put(12296, 12297);
      a.put(12297, 12296);
      a.put(12298, 12299);
      a.put(12299, 12298);
      a.put(12300, 12301);
      a.put(12301, 12300);
      a.put(12302, 12303);
      a.put(12303, 12302);
      a.put(12304, 12305);
      a.put(12305, 12304);
      a.put(12308, 12309);
      a.put(12309, 12308);
      a.put(12310, 12311);
      a.put(12311, 12310);
      a.put(12312, 12313);
      a.put(12313, 12312);
      a.put(12314, 12315);
      a.put(12315, 12314);
      a.put('（', '）');
      a.put('）', '（');
      a.put('＜', '＞');
      a.put('＞', '＜');
      a.put('［', '］');
      a.put('］', '［');
      a.put('｛', '｝');
      a.put('｝', '｛');
      a.put('｟', '｠');
      a.put('｠', '｟');
      a.put('｢', '｣');
      a.put('｣', '｢');
   }
}
